package logs

import (
	"github.com/gin-gonic/gin"
	"github.com/sirupsen/logrus"
	"os"
	"time"
)

var log *logrus.Logger

func InitLog() {
	log = logrus.New()
	// 为当前logrus实例设置消息的输出，同样地，
	// 可以设置logrus实例的输出到任意io.writer
	log.Out = os.Stdout
	// 为当前logrus实例设置消息输出格式为json格式。

	//设置日志格式
	log.SetFormatter(&logrus.JSONFormatter{
		TimestampFormat: "2006-01-02 15:04:05", //时间格式
		//	DisableSorting:  true,
		//	FullTimestamp:   true,
		//	ForceColors:     true,
		//	DisableColors:   false, //强制禁用颜色
		//	ForceQuote:      true,  //强制引用所有值
		//	DisableQuote:    true,  //如果它们都被设置为true, quote将强制对所有值。
	})

	/*	Log.WithFields(logrus.Fields{
		"animal": "walrus",
		"size":   10,
	}).Info("A group of walrus emerges from the ocean")*/
}
func Info(v ...interface{}) {
	log.Info(v)
}

func Error(v ...interface{}) {
	log.Error(v)
}

func Debug(v ...interface{}) {
	log.Debug(v)
}
func Panic(v ...interface{}) {
	log.Panic(v)
}
func LoggerToFile() gin.HandlerFunc {
	return func(c *gin.Context) {
		// 开始时间
		startTime := time.Now()
		// 处理请求
		c.Next()
		// 结束时间
		endTime := time.Now()
		// 执行时间
		latencyTime := endTime.Sub(startTime)
		// 请求方式
		reqMethod := c.Request.Method
		// 请求路由
		reqUri := c.Request.RequestURI
		// 状态码
		statusCode := c.Writer.Status()
		// 请求IP
		clientIP := c.ClientIP()
		//日志格式
		log.WithFields(logrus.Fields{
			"http_status": statusCode,
			"total_time":  latencyTime,
			"ip":          clientIP,
			"method":      reqMethod,
			"uri":         reqUri,
		}).Info("access")
	}
}
